package br.com.ac.fatureweb.view;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.ac.fatureweb.enums.EnumTypeReport;
import br.com.ac.fatureweb.model.vo.RelatorioObservacaoCampoVO;
import br.com.ac.fatureweb.service.NgcCadastroBean;
import br.com.ac.fatureweb.utilitary.FacesUtils;

/**
 * @author Brunno Gonçalves (brunnogoncalves@gmail.com) 17/03/2015
 */
@Named
@ViewScoped
public class RelatorioObservacaoCampoBean implements Serializable {

	private static final long serialVersionUID = -2479458247049203271L;

	@Inject
	private NgcCadastroBean ngcCadastroBean;

	private final String PASTA_RELATORIO = "reports/";

	private String competencia;

	private Long codDistrito;

	private Long codSetor;

	public String gerarRelatorio() {

		Integer mes = null;
		Integer ano = null;

		if (competencia != null && !competencia.isEmpty()) {
			mes = Integer.parseInt(competencia.substring(0, 2));
			ano = Integer.parseInt(competencia.substring(3, 7));
		}

		final List<RelatorioObservacaoCampoVO> lstImoveis = ngcCadastroBean
				.getLstImoveisRelatorioObservacaoCampo(mes, ano, codDistrito,
						codSetor);

		if (lstImoveis != null && !lstImoveis.isEmpty()) {
			final Map<String, Object> parametros = new HashMap<String, Object>();

			if (competencia != null && !competencia.isEmpty())
				parametros.put("COMPETENCIA", competencia);

			parametros.put("DISTRITO", codDistrito);
			parametros.put("SETOR", codSetor);

			final byte[] reportToPdf = FacesUtils.buildReportInByte(
					PASTA_RELATORIO + "relatorioObservacaoCampo.jasper",
					lstImoveis, parametros);

			FacesUtils.buildReport(reportToPdf, "Relatorio_Observacoes_Campo",
					EnumTypeReport.PDF);
		} else {
			FacesUtils.addMessageInformation(FacesUtils.MESSAGE_NO_RESULT);
		}
		return null;
	}

	public String getCompetencia() {
		return competencia;
	}

	public void setCompetencia(String competencia) {
		this.competencia = competencia;
	}

	public Long getCodDistrito() {
		return codDistrito;
	}

	public void setCodDistrito(Long codDistrito) {
		this.codDistrito = codDistrito;
	}

	public Long getCodSetor() {
		return codSetor;
	}

	public void setCodSetor(Long codSetor) {
		this.codSetor = codSetor;
	}

}
